package com.example.javamediaserver.rtmp;

import io.antmedia.rtmp.IRTMPApplication;
import io.antmedia.rtmp.RtmpDecoder;
import io.antmedia.rtmp.RtmpEncoder;
import io.antmedia.rtmp.RtmpMessageHandler;
import io.netty.channel.ChannelHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

/**
 * RTMP处理器工厂类 - 使用 Ant Media RTMP 库
 */
@Component
@RequiredArgsConstructor // 使用 Lombok 自动注入依赖
public class RtmpHandlerFactory {

    // 注入我们自定义的 Application Adapter (稍后创建)
    private final RtmpApplicationAdapter applicationAdapter;

    /**
     * 创建RTMP协议处理器链
     * 使用 Ant Media RTMP 库提供的解码器、编码器和消息处理器
     */
    public ChannelHandler[] createHandlers() {
        RtmpMessageHandler messageHandler = new RtmpMessageHandler();
        // 设置 Application Adapter，用于处理 RTMP 命令和事件
        messageHandler.setApplication(applicationAdapter);

        return new ChannelHandler[] {
            new RtmpDecoder(),           // RTMP 协议解码器
            new RtmpEncoder(),           // RTMP 协议编码器
            messageHandler               // RTMP 核心消息处理器
        };
    }
} 